package com.cango.qutz.web.auth.user.service;

import java.util.List;

import com.cango.framework.base.entity.DictEntity;
import com.cango.qutz.web.entity.UserEntity;
import com.cango.framework.base.pagination.PageInfo;
import com.cango.framework.base.pagination.PaginationResult;
import com.cango.qutz.web.entity.UserEntity;

/**
 * <p>ClassName: IUserService</p>
 * <p>Description: 用户Service接口</p>
 * <p>Author: weih</p>
 * <p>Date: 2015-04-01</p>
 */
public interface IUserService {
    /**
     * <p>Description: 插入用户</p>
     * @param user 用户对象
     * @return
     */
    int insert(UserEntity user);
    
    /**
     * <p>Description: 更新用户</p>
     * @param user 用户对象
     * @return
     */
    int update(UserEntity user);
    
    /**
     * <p>Description: 删除用户</p>
     * @param user 用户对象
     * @return
     */
    int delete(UserEntity user);
    
    /**
     * <p>Description: 根据用户id查询用户记录</p>
     * @param userId 用户对象
     * @return 用户对象
     */
    UserEntity queryObjectById(Integer userId);
    
    /**
     * <p>Description: 查询用户记录列表</p>
     * @param param 用户对象
     * @return 用户记录列表
     */
    List<UserEntity> queryList(Object param);
    
    /**
     * <p>Description: 分页查询用户记录列表</p>
     * @param param 用户对象
     * @param pageinfo 分页对象
     * @return 分页记录
     */
    PaginationResult<UserEntity> queryListByPage(UserEntity param, PageInfo pageinfo);
    
    /**
     * 功能描述: <br>
     * 验证登录名是否唯一
     *
     * @param loginId 登录名
     * @return 判断值
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    boolean validLoginId(String loginId);

    /**
     * 功能描述: <br>
     * 查询用户信息及其所属企业
     *
     * @param userId 登录名
     * @return 用户对象
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    UserEntity getOrgInfoByUserId(Integer userId);

    /**
     * 功能描述: <br>
     * 查询有效的部门
     *
     * @return 部门集合
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
//    List<Department> queryDeptInfo();
    
    void editPersonalInfo(UserEntity user);

    List<DictEntity> getUserSys(Long userId);
}
